package dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.criteria.CriteriaQuery;

import model.Especialidade;
import util.JPAUtil;

public class EspecialidadesDAO {
	public void insert(Especialidade especialidade) {

		EntityManager em = JPAUtil.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.persist(especialidade);
		tx.commit();
		em.clear();
	}
	
	public void update(Especialidade especialidade){
		
		EntityManager em = JPAUtil.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.merge(especialidade);
		tx.commit();
		em.clear();
	}
	
	public void delete(Especialidade especialidade){
		
		EntityManager em = JPAUtil.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.remove(em.merge(especialidade));
		tx.commit();
		em.clear();
	}
	
	public List<Especialidade> selectAll() {
		
		EntityManager em = JPAUtil.getEntityManager();
		CriteriaQuery<Especialidade> query = em.getCriteriaBuilder().createQuery(Especialidade.class);
		query.select(query.from(Especialidade.class));

		List<Especialidade> lista = em.createQuery(query).getResultList();

		em.close();
		return lista;
	}
}
